//
// ���ļ����� JavaTM Architecture for XML Binding (JAXB) ����ʵ�� v2.2.11 ��ɵ�
// ����� <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
// �����±���Դģʽʱ, �Դ��ļ��������޸Ķ�����ʧ��
// ���ʱ��: 2015.05.26 ʱ�� 03:50:35 PM CST 
//


package edu.stanford.bmir.protege.web.server.transform.service.org.iso25964;

import java.util.ArrayList;
import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;

import edu.stanford.bmir.protege.web.server.transform.service.org.purl.dc.elements._1.SimpleLiteral;


/**
 * <p>ThesaurusStruct complex type�� Java �ࡣ
 * 
 * <p>����ģʽƬ��ָ�����ڴ����е�Ԥ�����ݡ�
 * 
 * <pre>
 * &lt;complexType name="ThesaurusStruct"&gt;
 *   &lt;complexContent&gt;
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
 *       &lt;sequence&gt;
 *         &lt;group ref="{http://iso25964.org/}ThesaurusMetadataGroup"/&gt;
 *         &lt;element name="ThesaurusConcept" type="{http://iso25964.org/}ThesaurusConceptStruct" maxOccurs="unbounded"/&gt;
 *         &lt;element name="ThesaurusArray" maxOccurs="unbounded" minOccurs="0"&gt;
 *           &lt;complexType&gt;
 *             &lt;complexContent&gt;
 *               &lt;extension base="{http://iso25964.org/}ThesaurusArrayStruct"&gt;
 *               &lt;/extension&gt;
 *             &lt;/complexContent&gt;
 *           &lt;/complexType&gt;
 *         &lt;/element&gt;
 *         &lt;element name="ConceptGroup" type="{http://iso25964.org/}ConceptGroupStruct" maxOccurs="unbounded" minOccurs="0"/&gt;
 *         &lt;element name="Version" type="{http://iso25964.org/}VersionHistory" maxOccurs="unbounded" minOccurs="0"/&gt;
 *       &lt;/sequence&gt;
 *     &lt;/restriction&gt;
 *   &lt;/complexContent&gt;
 * &lt;/complexType&gt;
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ThesaurusStruct", propOrder = {
    "identifier",
    "contributor",
    "coverage",
    "creator",
    "date",
    "created",
    "modified",
    "description",
    "format",
    "language",
    "publisher",
    "relation",
    "rights",
    "source",
    "subject",
    "title",
    "type",
    "thesaurusConcept",
    "thesaurusArray",
    "conceptGroup",
    "version"
})
public class ThesaurusStruct {

    @XmlElement(required = true)
    protected List<String> identifier;
    @XmlElement(namespace = "http://purl.org/dc/elements/1.1/")
    protected List<SimpleLiteral> contributor;
    @XmlElement(namespace = "http://purl.org/dc/elements/1.1/")
    protected List<SimpleLiteral> coverage;
    @XmlElement(namespace = "http://purl.org/dc/elements/1.1/")
    protected List<SimpleLiteral> creator;
    @XmlSchemaType(name = "anySimpleType")
    protected List<String> date;
    @XmlSchemaType(name = "anySimpleType")
    protected String created;
    @XmlSchemaType(name = "anySimpleType")
    protected String modified;
    @XmlElement(namespace = "http://purl.org/dc/elements/1.1/")
    protected List<SimpleLiteral> description;
    @XmlElement(namespace = "http://purl.org/dc/elements/1.1/")
    protected List<SimpleLiteral> format;
    @XmlElement(namespace = "http://purl.org/dc/elements/1.1/", required = true)
    protected List<SimpleLiteral> language;
    @XmlElement(namespace = "http://purl.org/dc/elements/1.1/")
    protected List<SimpleLiteral> publisher;
    @XmlElement(namespace = "http://purl.org/dc/elements/1.1/")
    protected List<SimpleLiteral> relation;
    @XmlElement(namespace = "http://purl.org/dc/elements/1.1/")
    protected List<SimpleLiteral> rights;
    @XmlElement(namespace = "http://purl.org/dc/elements/1.1/")
    protected List<SimpleLiteral> source;
    @XmlElement(namespace = "http://purl.org/dc/elements/1.1/")
    protected List<SimpleLiteral> subject;
    @XmlElement(namespace = "http://purl.org/dc/elements/1.1/")
    protected List<SimpleLiteral> title;
    @XmlElement(namespace = "http://purl.org/dc/elements/1.1/")
    protected List<SimpleLiteral> type;
    @XmlElement(name = "ThesaurusConcept", required = true)
    protected List<ThesaurusConceptStruct> thesaurusConcept;
    @XmlElement(name = "ThesaurusArray")
    protected List<ThesaurusStruct.ThesaurusArray> thesaurusArray;
    @XmlElement(name = "ConceptGroup")
    protected List<ConceptGroupStruct> conceptGroup;
    @XmlElement(name = "Version")
    protected List<VersionHistory> version;

    /**
     * Gets the value of the identifier property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the identifier property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getIdentifier().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link String }
     * 
     * 
     */
    public List<String> getIdentifier() {
        if (identifier == null) {
            identifier = new ArrayList<String>();
        }
        return this.identifier;
    }

    /**
     * Person or organization who contributed to the thesaurus Gets the value of the contributor property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the contributor property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getContributor().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link SimpleLiteral }
     * 
     * 
     */
    public List<SimpleLiteral> getContributor() {
        if (contributor == null) {
            contributor = new ArrayList<SimpleLiteral>();
        }
        return this.contributor;
    }

    /**
     * Spatial or temporal coverage of the thesaurus Gets the value of the coverage property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the coverage property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getCoverage().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link SimpleLiteral }
     * 
     * 
     */
    public List<SimpleLiteral> getCoverage() {
        if (coverage == null) {
            coverage = new ArrayList<SimpleLiteral>();
        }
        return this.coverage;
    }

    /**
     * Person or organization primarily responsible for making Gets the value of the creator property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the creator property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getCreator().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link SimpleLiteral }
     * 
     * 
     */
    public List<SimpleLiteral> getCreator() {
        if (creator == null) {
            creator = new ArrayList<SimpleLiteral>();
        }
        return this.creator;
    }

    /**
     * Any date associated with the thesaurus Gets the value of the date property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the date property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getDate().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link String }
     * 
     * 
     */
    public List<String> getDate() {
        if (date == null) {
            date = new ArrayList<String>();
        }
        return this.date;
    }

    /**
     * The date the thesaurus was created
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getCreated() {
        return created;
    }

    /**
     * ����created���Ե�ֵ��
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setCreated(String value) {
        this.created = value;
    }

    /**
     * A date when this version was modified
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getModified() {
        return modified;
    }

    /**
     * ����modified���Ե�ֵ��
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setModified(String value) {
        this.modified = value;
    }

    /**
     * An account of the thesaurus Gets the value of the description property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the description property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getDescription().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link SimpleLiteral }
     * 
     * 
     */
    public List<SimpleLiteral> getDescription() {
        if (description == null) {
            description = new ArrayList<SimpleLiteral>();
        }
        return this.description;
    }

    /**
     * The file format or physical medium of the thesaurus Gets the value of the format property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the format property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getFormat().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link SimpleLiteral }
     * 
     * 
     */
    public List<SimpleLiteral> getFormat() {
        if (format == null) {
            format = new ArrayList<SimpleLiteral>();
        }
        return this.format;
    }

    /**
     * Codes showing languages supported by the thesaurus
     * 
     * It should be given as an alpha-2 code selected from ISO 639-1 if present in that list, or an alpha-3 code from ISO 639-2 if not. These codes may be extended where necessary with the additional codes described in RFC 4646 and listed in the IANA subtag registry (see section 12.4.5 of the standard).Gets the value of the language property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the language property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getLanguage().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link SimpleLiteral }
     * 
     * 
     */
    public List<SimpleLiteral> getLanguage() {
        if (language == null) {
            language = new ArrayList<SimpleLiteral>();
        }
        return this.language;
    }

    /**
     * Entity responsible for publication Gets the value of the publisher property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the publisher property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getPublisher().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link SimpleLiteral }
     * 
     * 
     */
    public List<SimpleLiteral> getPublisher() {
        if (publisher == null) {
            publisher = new ArrayList<SimpleLiteral>();
        }
        return this.publisher;
    }

    /**
     * A related publication Gets the value of the relation property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the relation property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getRelation().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link SimpleLiteral }
     * 
     * 
     */
    public List<SimpleLiteral> getRelation() {
        if (relation == null) {
            relation = new ArrayList<SimpleLiteral>();
        }
        return this.relation;
    }

    /**
     * Copyright or other rights information Gets the value of the rights property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the rights property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getRights().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link SimpleLiteral }
     * 
     * 
     */
    public List<SimpleLiteral> getRights() {
        if (rights == null) {
            rights = new ArrayList<SimpleLiteral>();
        }
        return this.rights;
    }

    /**
     * Resource from which the thesaurus was derived
     * 
     * Used by a thesaurus variant to refer the URI of the original thesaurus for which it is a variant.Gets the value of the source property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the source property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getSource().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link SimpleLiteral }
     * 
     * 
     */
    public List<SimpleLiteral> getSource() {
        if (source == null) {
            source = new ArrayList<SimpleLiteral>();
        }
        return this.source;
    }

    /**
     * Index terms indicating the subject content Gets the value of the subject property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the subject property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getSubject().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link SimpleLiteral }
     * 
     * 
     */
    public List<SimpleLiteral> getSubject() {
        if (subject == null) {
            subject = new ArrayList<SimpleLiteral>();
        }
        return this.subject;
    }

    /**
     * Title of the thesaurus Gets the value of the title property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the title property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getTitle().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link SimpleLiteral }
     * 
     * 
     */
    public List<SimpleLiteral> getTitle() {
        if (title == null) {
            title = new ArrayList<SimpleLiteral>();
        }
        return this.title;
    }

    /**
     * The genre of the vocabulary, e.g. "thesaurus"Gets the value of the type property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the type property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getType().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link SimpleLiteral }
     * 
     * 
     */
    public List<SimpleLiteral> getType() {
        if (type == null) {
            type = new ArrayList<SimpleLiteral>();
        }
        return this.type;
    }

    /**
     * Gets the value of the thesaurusConcept property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the thesaurusConcept property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getThesaurusConcept().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link ThesaurusConceptStruct }
     * 
     * 
     */
    public List<ThesaurusConceptStruct> getThesaurusConcept() {
        if (thesaurusConcept == null) {
            thesaurusConcept = new ArrayList<ThesaurusConceptStruct>();
        }
        return this.thesaurusConcept;
    }

    /**
     * Gets the value of the thesaurusArray property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the thesaurusArray property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getThesaurusArray().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link ThesaurusStruct.ThesaurusArray }
     * 
     * 
     */
    public List<ThesaurusStruct.ThesaurusArray> getThesaurusArray() {
        if (thesaurusArray == null) {
            thesaurusArray = new ArrayList<ThesaurusStruct.ThesaurusArray>();
        }
        return this.thesaurusArray;
    }

    /**
     * Gets the value of the conceptGroup property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the conceptGroup property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getConceptGroup().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link ConceptGroupStruct }
     * 
     * 
     */
    public List<ConceptGroupStruct> getConceptGroup() {
        if (conceptGroup == null) {
            conceptGroup = new ArrayList<ConceptGroupStruct>();
        }
        return this.conceptGroup;
    }

    /**
     * Gets the value of the version property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the version property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getVersion().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link VersionHistory }
     * 
     * 
     */
    public List<VersionHistory> getVersion() {
        if (version == null) {
            version = new ArrayList<VersionHistory>();
        }
        return this.version;
    }


    /**
     * <p>anonymous complex type�� Java �ࡣ
     * 
     * <p>����ģʽƬ��ָ�����ڴ����е�Ԥ�����ݡ�
     * 
     * <pre>
     * &lt;complexType&gt;
     *   &lt;complexContent&gt;
     *     &lt;extension base="{http://iso25964.org/}ThesaurusArrayStruct"&gt;
     *     &lt;/extension&gt;
     *   &lt;/complexContent&gt;
     * &lt;/complexType&gt;
     * </pre>
     * 
     * 
     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "")
    public static class ThesaurusArray
        extends ThesaurusArrayStruct
    {


    }

}
